%{
    #include <memory>
%}

typedef long long ptrdiff_t;
namespace std {
    template<typename _Tp>
    class allocator {
        public:
            typedef size_t size_type;
            typedef ptrdiff_t difference_type;
            typedef _Tp* pointer;
            typedef const _Tp* const_pointer;
            typedef _Tp& reference;
            typedef const _Tp& const_reference;
            typedef _Tp value_type;
            allocator();
            allocator(const allocator& other);
            pointer address(reference __x) const;
            const_pointer address(const_reference __x) const;
            _Tp* allocate(size_type __n, const void* = 0);
            void deallocate(pointer __p, size_type __n);
            size_type max_size() const;
            void construct(pointer __p, const _Tp& __val);
            void destroy(pointer __p);
    };
}